package mvc.modelo;


import java.io.IOException;
import java.sql.*;
import javax.swing.*;

public class Conexion {
     //controladore JDBC Y URL de la base de datos MySQL
     private String controlador="com.mysql.jdbc.Driver";
     //declarar objeto Connection para conectar a la base de datos
     private Connection conexion;

     private String MensajeError ;

    /***
     * CONSTRUCTORES
     */
    public Conexion(){
      MensajeError = "Clase Conexion: Error<br/>";
    }

   public Connection abrirConexion(){
                //conectarse a  la base de datos
                try{

                             //cargar clase de controlador de base de datos
                             Class.forName(controlador);
                             //establecer coneccion a la base de datos
                             conexion= DriverManager.getConnection("jdbc:mysql://localhost:3306/tesis","root","");
                             return conexion;

                }//fin del bloque try
                //detectar posibles problemas al interactuar con la base de datos
                catch(SQLException exceptionSql){
                             JOptionPane.showMessageDialog(null, exceptionSql.getMessage(), "Error en la base de datos", JOptionPane.ERROR_MESSAGE);
                             this.MensajeError = MensajeError  + exceptionSql.getMessage();
                             return null;
                }
                //detectar posibles problemas al cargar el controlador de la base de datos
                catch(ClassNotFoundException claseNoEncontrada){
                             JOptionPane.showMessageDialog(null, claseNoEncontrada.getMessage(), "No se econtro el controlador", JOptionPane.ERROR_MESSAGE);
                             this.MensajeError = MensajeError  + claseNoEncontrada.getMessage();
                             return null;
                }
                //detectar errores desconocidos
                catch(Exception e){
                             JOptionPane.showMessageDialog(null, "El mensaje de error es: "+e.getMessage(), "Error desconocido al abrir conexion", JOptionPane.ERROR_MESSAGE);
                             this.MensajeError = MensajeError  + e.getMessage();
                             return null;
                }

   }//fin del metodo abrirConexion



   public void cerrarConexion(){
                // Asegurar que conexion se cierre correctamente
                try {
                             conexion.close();
                }
                // manejar posibles excepciones al cerrar conexion
                catch (SQLException exceptionSql) {
                             JOptionPane.showMessageDialog(null, exceptionSql.getMessage(),
                                                       "Error al cerrar la conexion", JOptionPane.ERROR_MESSAGE);
                              this.MensajeError = MensajeError  + exceptionSql.getMessage();
                }
                //errores desconocidos al cerrar la conexion
                catch (Exception e) {
                             JOptionPane.showMessageDialog(null, "La instancia de la conexion es: "+conexion+"\n"+
                                                       "El mensaje de error es: "+e.getMessage(),
                                                       "Error al cerrar la conexion", JOptionPane.ERROR_MESSAGE);
                             this.MensajeError = MensajeError  + e.getMessage();
                }

   }//fin del metodo cerrarConexion

  public String getMensajeError() {
    return MensajeError;
  }

  public void setMensajeError(String MensajeError) {
    this.MensajeError = MensajeError;
  }






}// fin de la clase Conexion
